﻿using SupportLayer.Enums;

namespace SupportLayer.Util
{
  public class Seta
  {
    private AlturaLetra altura = AlturaLetra.A100;
    private TipoSeta tipoSeta = TipoSeta.S1E;
    private bool isPistaDupla = false;

    public Seta(AlturaLetra _altura, TipoSeta _tipoSeta, bool _isPistaDupla)
    {
      altura = _altura;
      tipoSeta = _tipoSeta;
      isPistaDupla = _isPistaDupla;
    }

    public TipoSeta GetTipoSeta()
    {
      return this.tipoSeta;
    }

    public int GetWidth()
    {
      switch (tipoSeta)
      {
        case TipoSeta.S1N:
          return Espacamento.Round(140, (double)altura / 100);

        case TipoSeta.S1E:
        case TipoSeta.S1O:
          return Espacamento.Round(156, (double)altura / 100);

        case TipoSeta.S1NE:
        case TipoSeta.S1NO:
        case TipoSeta.S1SE:
        case TipoSeta.S1SO:
          return Espacamento.Round(130, (double)altura / 100);

        case TipoSeta.S2N:
          return Espacamento.Round(140, (double)altura / 100);

        case TipoSeta.S2NE:
        case TipoSeta.S2NO:
        case TipoSeta.S2SE:
        case TipoSeta.S2SO:
          return Espacamento.Round(182, (double)altura / 100);

        case TipoSeta.S3E:
        case TipoSeta.S3O:
          return Espacamento.Round(156, (double)altura / 100);

        case TipoSeta.S4S:
          if (altura == AlturaLetra.A150
            || altura == AlturaLetra.A175)
            return 470;
          else if (altura == AlturaLetra.A200
            || altura == AlturaLetra.A225
            || altura == AlturaLetra.A250)
            return 590;
          else if (altura == AlturaLetra.A300)
            return 700;
          return 0;

        default:
          return 0;
      }
    }
  }
}